package pickbook.model;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

//희망도서 서비스 implements 후 정의
@Service
public class BuyBookServiceImpl implements BuyBookService{
	
	@Resource(name="buyBookDAOImpl")
	private BuyBookDAO buyBookDAO;

	/**
	 * method : getSearchListByFactor
	 * comment : 검색어(factor)에 해당하는 책 정보를 찾는 메서드
	 * 
	 * @param factor
	 * @param pageNo
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-04
	 */
	@Override
	public ListVO getSearchListByFactor(String factor, String pageNo) {
		
		if(pageNo==null||pageNo=="") pageNo="1";
		
		List<BuyBookVO> list=buyBookDAO.getSearchListByFactor(factor, pageNo);//희망도서 검색어 검색결과
		
		int total=buyBookDAO.searchByFactorTotalContent(factor);//검색결과 총 갯수
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		
		ListVO lvo=new ListVO(list, paging);
		
		return lvo;
		
	}

	/**
     * method : getSearchListByLocationUniv
     * comment : 위치(location)과 대학교(univ)에 해당하는 책 정보를 찾는 메서드
     * 
     * @param location
     * @param univ
     * @param pageNo
     * @return
     * 
     * @author 이형철
     * @date 2014-07-04
     */
    @Override
    public ListVO getSearchListByLocationUniv(String location, String univ, String pageNo) {
    	
       if(pageNo==null||pageNo=="")  pageNo="1";
       
       List<BuyBookVO> list=buyBookDAO.getSearchListByLocationUniv(location, univ, pageNo);//희망도서 지역,대학 검색결과 목록
       
       int total = buyBookDAO.searchByLocationUnivTotalContent(location, univ);//검색결과 총 갯수
       PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
       
       ListVO lvo=new ListVO(list, paging);
       
       return lvo;
       
    }

	/**
	 * method : insertBook
	 * comment : 희망도서 추가 메서드
	 * 
	 * @param bbvo
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03
	 */
	@Override
	public void insertBook(BuyBookVO bbvo) {
		buyBookDAO.insertBook(bbvo);
	}
	
	/**
	 * method : updateBook
	 * comment : 나의 희망도서 수정하는 메서드
	 * 
	 * @param bbvo
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03 
	 */
	@Override
	public void updateBook(BuyBookVO bbvo) {
		buyBookDAO.updateBook(bbvo);
	}
	
	/**
	 * method : deleteBook
	 * comment : 나의 희망도서 삭제하는 메서드
	 * 
	 * @param no
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03 
	 */
	@Override
	public void deleteBook(int no) {
		buyBookDAO.deleteBook(no);
	}
	
	/**
	 * method : findByBookNo
	 * comment : 책 번호에 해당하는 도서정보 조회 메서드
	 * 
	 * @param no
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03
	 */
	@Override
	public BuyBookVO findByBookNo(int no) {
		return buyBookDAO.findByBookNo(no);
	}

	/**
	 * method : getRecentBookList
	 * comment : pageNo를 통해 최신 순으로 희망도서 리스트를 받아오는 메서드
	 * 
	 * @param pageNo
	 * @return
	 * 
	 * @author 제형규, 이형철
	 * @date 2014-07-02
	 */
	@Override
	public ListVO getRecentBookList(String pageNo) {
		
		if(pageNo==null||pageNo=="") pageNo="1";
		
		List<BuyBookVO> list=buyBookDAO.getRecentBookList(pageNo);//최근희망도서 목록
		
		int total=buyBookDAO.totalContent();//희망도서 총 갯수
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		
		ListVO lvo=new ListVO(list, paging);
		
		return lvo;
		
	}

	/**
	 * method : getMyBuyBookList
	 * comment : pageNo와 id를 통해 최신 순으로 나의 희망도서 리스트를 받아오는 메서드
	 * 
	 * @param pageNo
	 * @param id
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-03
	 */
	@Override
	public ListVO getMyBuyBookList(String pageNo, String id) {
		
		if(pageNo==null||pageNo=="") pageNo="1";
		
		List<BuyBookVO> list=buyBookDAO.getMyBuyBookList(pageNo, id);//나의 희망도서 목록
		
		int total=buyBookDAO.myTotalBuyContent(id);//나의 희망도서 목록 총 갯수
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		
		ListVO lvo=new ListVO(list, paging);
		
		return lvo;
		
	}
	
	/**
	 * method : updateVisible
	 * comment : no와 bVisible으로 나의 판매도서 공개 여부를 업데이트하는 메서드
	 * 
	 * @param no
	 * @param bVisible
	 * @return
	 * 
	 * @author 이형철, 김병각
	 * @date 2014-07-03
	 */
	@Override
	public String updateVisible(int no, int bVisible) {

		String onoff = "";
		
		if(bVisible == 1){//공개 ON일 경우
			bVisible = 0;
			onoff = "OFF";
		}else{//공개 OFF일 경우
			bVisible = 1;
			onoff = "ON";
		}
		
		buyBookDAO.updateVisible(no, bVisible);//공개여부 업데이트
		BuyBookVO sbvo = buyBookDAO.findByBookNo(no);//책번호를 통해 희망도서 정보 반환
		
		return onoff;
		
	}

}
